Play audio with Raspberry Pi

最近想在 Raspberry Pi 上播放音樂,於是在網路上搜尋了一下,發現可以透過 Apple AirPlay 技術讓 Raspberry Pi 成為家庭音樂中心,這邊將這幾天的搜尋成果整理了一下。

讓 Raspberry Pi 發出聲音

想讓 Raspberry Pi 發出聲音一般方法有:

  • 透過 HDMI interface。
  • 透過 3.5mm audio jack。
    所以可以先選定想要輸出聲音的硬體界面,我這邊是選擇將耳機插入 3.5mm 的耳機孔。

在 Raspberry Pi 開機之後,我們第一次事先確認 Linux Kernel 是否已載入 Sound Module。

1
lsmod | grep snd_bcm2835

如果沒有載入音效模組的話,便手動載入:

1
sudo modprobe snd_bcm2835

成功載入後,我們接下來進行進一步的設定。
首先設定 Raspberry Pi 聲音輸出的界面:

1
amixer cset numid=3 n

上述 “n” 的值代表:

  • 0: 自動,會自動偵測以 HDMI or 3.5mm audio jack 為輸出界面,但 HDMI 的優先權高於 3.5mm audio jack。
  • 1: 強制以 3.5mm audio jack 輸出。
  • 2: 強制以 HDMI 輸出。

另外 Raspberry Pi 也提供一個程式 alsamixer 讓我們透過 GUI 界面讓我們進行一些進階設定。

在進入 GUI 界面後,我們透過方向鍵 ↑↓ 來調整音量大小,按下 ESC 鍵離開。

alt alsamixer

接下來我們試試看有沒有聲音吧。

1
aplay /usr/share/sounds/alsa/Front_Center.wav

這時你應該可以從耳機上聽到一段人聲。

使用 OMXPlayer 播放

一個簡單播放 Mp3 的方式便是透過 OMXPlayer。

1
2
3
sudo apt-get install omxplayer
wget http://goo.gl/MOXGX3 -O example.mp3 --no-check-certificate
omxplayer example.mp3

OMXPlayer 是很強大的播放程式,除了支援 Raspberry Pi SoC 的硬體視訊加速功能外,也可以直接透過命令列直接播放影片。

以下簡單介紹幾種用法。

播放一個影片檔:

1
omxplayer video.mp4

使用 HDMI 播放影片檔:

1
omxplayer -o hdmi video.mp4

AirPlay with Raspberry Pi

AirPlay 是 Apple 的一種播放技術,可以將 Mac & iDevice 上的 Video or Audio 送到支援 AirPlay 的設備上進行播放,換句話說只要買一個支援 AirPlay 的藍芽喇叭,就可以把 iPhone 上的音樂送到藍芽喇叭上播放;買一個 Apple TV,就可以把 iPad 上的日劇透過 AirPlay 送到家中的大螢幕上觀看,真是太方便的功能啊。

如果不想買貴鬆鬆的藍芽喇叭,那麼發揮 Maker 的浪漫,拿家裡的電腦喇叭透過 Raspberry Pi 來實現 AirPlay 也是可以的喔。

首先更新系統,並下載必要的程式。

1
2
3
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apt-get install libssl-dev libavahi-client-dev libasound2-dev

shairport

shairport 是一個模擬 AirPort Express 並作為接受 AirPlay 串流音樂的程式,雖然不支援 AirPlay v2 (影像及照片串流),但用作播放音樂使用的話,其實是很不錯的。

shairport 的作者已經聲明不再維護該專案了。

安裝 shairport:

1
2
3
4
5
git clone https://github.com/abrasive/shairport.git
cd shairport
./configure
make
./shairport -a AirPi

現在拿出 iPhone 播放音樂,開啟 AirPlay,並選擇 AirPi,好了,現在有音樂了!
alt AirPlay screenshot 1
alt AirPlay screenshot 2


參考資料:

  1. http://trouch.com/2012/08/03/airpi-airplay-audio-with-raspberry/
  2. https://github.com/abrasive/shairport
  3. http://cagewebdev.com/index.php/raspberry-pi-getting-audio-working/
  4. http://atceiling.blogspot.tw/2014/02/raspberry-pi.html#.VXVXJ2CbS7M
  5. http://www.raspberrypi-spy.co.uk/2013/06/raspberry-pi-command-line-audio/